(function(factory) {
	if (typeof define === "function" && define.amd) {
		// AMD. Register as an anonymous module.
		define(factory);
	} else {
		// Browser globals
		factory();
	}
}(function() {
	/**
	 * @author 李球 <service@hteos.com>
	 * @class HteOS.Masker 遮罩组件
	 * @singleton
	 */
	HteOS.Masker = {};

	HteOS.Masker.mask = function(el,options) {
		var maskEl = el.find(".hte-mask");
		if (maskEl.length > 0) {
			maskEl.html('');
		} else {
			maskEl = $('<div class="hte-mask"></div>');
		}
		var maskElInner = $('<div class="hte-mask-inner"></div>');
		if (!(typeof options == 'object')) {
			options = {
				msg : options
			}
		}
		if (options.transparent) {
			maskEl.addClass('hte-mask-transparent');
		} else {
			maskEl.removeClass('hte-mask-transparent');
		}
		if (options.modal === true) {
			maskEl.removeClass('hte-mask-transparent');
		} else {
			maskEl.addClass('hte-mask-transparent');
		}
		maskEl.append(maskElInner);
		var maskMsgEl;
		if (options.msg) {
			var html = '<div class="hte-mask-msg">';
			if(options.loading !== false){
				html += '<img src=\"'+HteOS.basePath+'images/preloader.gif\" style=\"height:18px;margin-right:5px;margin-top:-5px;\"> ';
			}
			if(options.icon){
				html += "<span class=\""+ options.icon +"\"></span>&nbsp;&nbsp;";
			}
			html += options.msg + '</div>';
			maskMsgEl = $(html);
			maskElInner.append(maskMsgEl);
		}
		el.append(maskEl);
		if (maskElInner) {
			window.setTimeout(function(){
				maskMsgEl.css("line-height", (el.height() ) + 'px');
			},100);
		}
	}

	HteOS.Masker.unmask = function(el) {
		el.find(' > .hte-mask').remove();
	}
}));